const s1 = Symbol('s1')
const s2 = Symbol('s2')
const Henry = {
  [s1]: '唯一值，一般情况下无法读取',
  [s2]: '唯一值，一般情况下无法读取',
  name: 'Henry'
}

console.log('Henry: ', Henry)

// 读不到
for (let key in Henry) {
  console.log('for...in: ', key) //=> 只有 name
}

console.log('Object.keys: ', Object.keys(Henry)) //=> 只有 ['name']

console.log('Object.getOwnPropertyNames: ', Object.getOwnPropertyNames(Henry))

// 可读，专门用来只读取 Symbol 类型的，但是其余非Symbol的属性又读不到了
console.log('Object.getOwnPropertySymbols', Object.getOwnPropertySymbols(Henry)) // 返回值是一个数组

// 全部可读, Reflect 对象,在 ES6 中新增的
console.log('Reflect.ownKeys: ', Reflect.ownKeys(Henry)) // 返回值是一个数组
